package jaux.tank.service.system;

import java.util.Collection;
import java.util.List;

import jaux.tank.bean.entity.system.Dept;
import jaux.tank.bean.vo.node.DeptNode;
import jaux.tank.bean.vo.node.ZTreeNode;

/**
 * 部门组织管理服务接口
 * Created on 2018/3/21 0021.
 *
 */
public interface DeptService {
	
	/**
	 * 以ztree节点的形式获取所有部门.
	 *
	 * @return the list
	 */
	List<ZTreeNode> tree();

	/**
	 * 以ztree节点的形式获取指定部门及下级，.
	 *
	 * @param deptId the dept id
	 * @return the list
	 */
	List<ZTreeNode> tree(String deptId);

	/**
	 * 查询部门全称或简称包含查询字符串的.
	 *
	 * @param nameLike what the name likes
	 * @return the list
	 */
	List<Dept> query(String nameLike);

	/**
	 * 删除部门.
	 *
	 * @param deptId the dept id
	 */
	void deleteDept(String deptId);

	/**
	 * 查询所有部门.
	 *
	 * @return the list
	 */
	List<DeptNode> queryAll();

	/**
	 * 查询指定部门的下级部门，不包含查询条件部门.
	 *
	 * @param deptId the dept id
	 * @return the list
	 */
	List<Dept> querySubDepts(String deptId);
}
